using System.Collections;
using System.Collections.Generic;
using Cinemachine;
using FlowCanvas;
using FlowCanvas.Nodes;
using NodeCanvas.Framework;
using ParadoxNotion.Design;
using Yoozoo.Gameplay.Liberty.AI;

namespace Yoozoo.Gameplay.Liberty.Nodes
{
    [Category("Ggame")]
    public class AddLibertyCar : LatentActionNodeBase
    {
        public override bool allowRoutineQueueing { get { return false; } }
        
        public IEnumerator Invoke(int countFactor)
        {
            yield return null;
            // List<CarBirthData> birthDataList = new List<CarBirthData>(50);
            //
            // for (int i = 0; i < countFactor; i++)
            // {
            //     CarBirthData birthData = new CarBirthData();
            //     birthData.random = true;
            //     birthData.pathId = 1;
            //     birthData.uniqueId = i;
            //     birthData.customPos = true;
            //     birthData.pos = i * 75 * (7.0f/countFactor) + UnityEngine.Random.Range(0,15);
            //     birthDataList.Add(birthData);
            // }
            //     
            // for (int i = 0; i < countFactor; i++)
            // {
            //     CarBirthData birthData = new CarBirthData();
            //     birthData.random = true;
            //     birthData.pathId = 2;
            //     birthData.uniqueId = i + 10000;
            //     birthData.customPos = true;
            //     birthData.pos = i * 80 * (7.0f/countFactor) + UnityEngine.Random.Range(0,15);
            //     birthDataList.Add(birthData);
            // }
            //
            // int limit = birthDataList.Count / 5;
            // if (limit == 0)
            // {
            //     limit = 1;
            // }
            //
            // int c = 0;
            // for (int i = 0; i < birthDataList.Count; i++)
            // {
            //     LibertyAIUtils.AIManager.CarBirthManager.AddCar(birthDataList[i]);
            //     c++;
            //     if (c == limit) //每帧加载数量限制
            //     {
            //         c = 0;
            //         yield return null;
            //     }
            // }
        }

        protected override void OnRegisterDerivedPorts(FlowNode node)
        {
            var p1 = node.AddValueInput<int>(parameters[0].Name);
            node.AddFlowInput("In", (f) => { Begin(Invoke(p1.value), f); });
        }

    }
}